在Windows Server上搭建OpenVPN服务器 您所在的位置:网站首页 Windows 下的 OpenVPN 安装 在Windows Server上搭建OpenVPN服务器

在Windows Server上搭建OpenVPN服务器

2024-05-29 14:10| 来源: 网络整理| 查看: 265

OpenVPN是一个TCP协议的网络层VPN实现。性能一般,但是使用广泛。

什么是OpenVPN

引用维基百科对OpenVPN的解释:

OpenVPN is a virtual private network (VPN) system that implements

techniques to create secure point-to-point or site-to-site connections

in routed or bridged configurations and remote access facilities.

在Windows上搭建OpenVPN服务器下载+安装

OpenVPN的软件部分分为客户端和服务端两部分,而在OpenVPN官网的首页给的下载地址中,并没有适用于Windows的服务端程序。

它被藏在了这个页面里。直接下载Windows 64-bit MSI installer就可以了。(如果是32位系统,你需要下载32-bit的,但我相信你是64位的Windows)

安装的时候一路next就可以了,不过有一点需要注意,选择安装组件的时候,easyrsa3并没有默认选中,需要手动选上。

安装后,为了使得虚拟网络适配器的驱动被Windows加载,需要重新启动。

生成CA根证书、服务端及客户端的公私钥对

这一部分主要参考了参考阅读部分的文章1(OpenVPN server on Windows)。假设你使用的是默认安装目录,打开一个Shell,依次执行如下步骤:

1. 切换工作目录 cd "C:\Program Files\OpenVPN\easy-rsa" 2. 启动EasyRSA EasyRSA-Start.bat 3. 初始化PKI(公钥基础设施) ./easyrsa init-pki 4. 编辑配置文件 notepad vars.bat 5. 在记事本中写入如下内容(记得修改) set KEY_COUNTRY=US set KEY_PROVINCE=CA set KEY_CITY=SanFrancisco set KEY_ORG=OpenVPN set [email protected] set DH_KEY_SIZE=2048 6. 保存,生效 vars.bat ./easyrsa clean-all 7. 生成CA根证书(nopass参数表示不使用密码保护私钥,下同) ./easyrsa build-ca nopass 8. 生成服务器端的私钥 ./easyrsa build-server-full server nopass 9. 生成客户端的私钥(如果有多个客户端,需要生成多个) ./easyrsa build-client-full YourClientName nopass 10. 生成DH参数(DH是一个用来协商密钥的协议,如欲了解详情,可以阅读本人的相关密码学分析博客) ./easyrsa gen-dh 11. 生成TLS握手用到的静态密钥

默认情况下,OpenVPN在TLS握手时使用静态密钥,需要用如下命令生成:

openvpn --genkey tls-auth ta.key

需要注意的是,这个密钥需要通过安全的方式分发给服务器和客户,并且需要妥善保存*(密码学不保护密钥!)*。官方文档是这样说的:

This key should be copied over a pre-existing secure channel to the

server and all client machines.

创建配置文件

在OpenVPN目录下的sample-config目录里,可以找到一些示例配置文件。注意,.ovpn其实就是linux下OpenVPN的.conf配置文件,其内容完全相同,只是扩展名不同而已。

将服务器的示例配置文件拷贝一份到config-auto目录下并编辑,找到如下几行:

ca ca.crt cert server.crt key server.key dh dh1024.pem tls-auth ta.key 0

分别将他们改为你的实际文件目录,如:

ca "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ca.crt" cert "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\issued\\server.crt" key "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\private\\server.key" dh "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\dh.pem" tls-auth "C:\\Program Files\\OpenVPN\\easy-rsa\\ta.key" 0

这个配置文件还有些地方需要修改一下:

修改port和proto来设置端口和协议(tcp或udp),官方文档建议使用udp,因为udp更容易抵抗DoS攻击和端口扫描;如果容易被QOS掉建议使用TCP以保证稳定

把topology subnet这一行的注释取消掉,不然会默认采用net30方案(为了兼容Windows下旧于2.0.9的客户端),会报warning(net30就要被废弃了)

如果使用tcp模式,就把explicit-exit-notify 1这一行注释掉。TCP模式下OpenVPN不支持此功能

重启服务,应用配置文件

在运行中输入services.msc,打开服务管理页面,找到OpenVPN的服务,点击“重新启动”来重启OpenVPN服务。

服务重启后,查看OpenVPN目录下log文件夹内的server.log文件,此时应该可以看到OpenVPN服务已经正常启动了。如果有错误,按照错误提示进行修正。

登录到刚刚配置好的OpenVPN服务器

同样地,OpenVPN的客户端使用.ovpn配置文件进行配置,不过服务端和客户端的配置文件不通用。要创建客户端的配置文件,需要从sample-config目录里拷贝client.ovpn进行修改。首先要修改其中的地址、端口号和协议类型,还有加密模式。(准确地说是A.E.模式,认证加密)

将配置文件拷贝给客户端使用,同时也需要将CA的证书、TLS密钥、客户端证书及私钥拷贝给客户端,就是这些文件:

ca.crt CA证书

client.crt 客户端证书

client.key 客户端私钥

ta.key 用于TLS握手的静态密钥

参考阅读

OpenVPN server on Windows:一份比较详细的Windows下配置OpenVPN服务器的实操指南

Galois/Counter Mode - Wikipedia:GCM模式

Hardening OpenVPN Security:增强OpenVPN的安全性



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有